/// <summary>** BEGIN LICENSE BLOCK *****
/// Version: LGPL 3
/// 
/// Copyright 2008 David Cumps <david@cumps.be>
/// 
/// This file is part of ArmoryLib2.
///
/// ArmoryLib is free software: you can redistribute it and/or modify
/// it under the terms of the GNU Lesser General Public License as published by
/// the Free Software Foundation, either version 3 of the License, or
/// (at your option) any later version.
///
/// ArmoryLib is distributed in the hope that it will be useful,
/// but WITHOUT ANY WARRANTY; without even the implied warranty of
/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
/// GNU Lesser General Public License for more details.
///
/// You should have received a copy of the GNU Lesser General Public License
/// along with ArmoryLib2.  If not, see <http://www.gnu.org/licenses/>.
/// **** END LICENSE BLOCK ****
/// </summary>

using ArmoryLib2.Character.StatsDetail;

namespace ArmoryLib2.Character
{
    public class Stats
    {
        private Strength _strength;
        public Strength Strength
        {
            get { return _strength; }
            private set { _strength = value; }
        }

        private Agility _agility;
        public Agility Agility
        {
            get { return _agility; }
            private set { _agility = value; }
        }

        private Stamina _stamina;
        public Stamina Stamina
        {
            get { return _stamina; }
            private set { _stamina = value; }
        }

        private Intellect _intellect;
        public Intellect Intellect
        {
            get { return _intellect; }
            private set { _intellect = value; }
        }

        private Spirit _spirit;
        public Spirit Spirit
        {
            get { return _spirit; }
            private set { _spirit = value; }
        }

        private Armor _armor;
        public Armor Armor
        {
            get { return _armor; }
            private set { _armor = value; }
        }

        private Resistances _resistances;
        public Resistances Resistances
        {
            get { return _resistances; }
            internal set { _resistances = value; }
        }

        private Melee _melee;
        public Melee Melee
        {
            get { return _melee; }
            internal set { _melee = value; }
        }

        private Ranged _ranged;
        public Ranged Ranged
        {
            get { return _ranged; }
            internal set { _ranged = value; }
        }

        private Defenses _defense;
        public Defenses Defense
        {
            get { return _defense; }
            internal set { _defense = value; }
        }

        private Spell _spell;
        public Spell Spell
        {
            get { return _spell; }
            internal set { _spell = value; }
        }

        private int _totalHealth;
        public int TotalHealth
        {
            get { return _totalHealth; }
            internal set { _totalHealth = value; }
        }

        private SecondaryBar _secondaryBar;
        public SecondaryBar SecondaryBar
        {
            get { return _secondaryBar; }
            internal set { _secondaryBar = value; }
        }

        internal Stats(Strength strength,
                       Agility agility,
                       Stamina stamina,
                       Intellect intellect,
                       Spirit spirit,
                       Armor armor)
        {
            Strength = strength;
            Agility = agility;
            Stamina = stamina;
            Intellect = intellect;
            Spirit = spirit;
            Armor = armor;
        }
    }
}
